package com.zpark.se.string;

/**
 * StringBuffer类常用方法
 */
public class StringBufferDemo02 {
    public static void main(String[] args) {
        // 创建StringBuffer对象
        StringBuffer buffer = new StringBuffer("Java");

        /**
         * append(val)：将给定的内容拼接到StringBuffer对象末尾
         */
        buffer.append("StringBuffer快速拼接字符串");
        System.out.println(buffer);

        /**
         * 获取当前StringBuffer对象的容量
         */
        int size = buffer.capacity();
        System.out.println(size);

        /**
         * 获取指定索引位置的字符
         */
        char ch = buffer.charAt(3);
        System.out.println(ch);

        /**
         * delete(start, end)：删除指定索引位置的字符，不包含end
         */
        buffer.delete(3, 5);
        System.out.println(buffer);

        /*
         deleteCharAt(index)：删除指定索引位置的字符
         */
        buffer.deleteCharAt(3);
        System.out.println(buffer);

        /*
         indexOf(str)：返回指定字符串第一次出现的索引位置
         indexOf(str, offsetIndex)：返回指定字符串第一次出现的索引位置，从指定位置开始查找
         */
        int index = buffer.indexOf("Buffer");
        System.out.println(index);

        /*
         insert(index, str)：在指定索引位置插入指定字符串
         */
        buffer.insert(3, "Java");
        System.out.println(buffer);

        /*
         lastIndexOf(str)：返回指定字符串最后一次出现的索引位置
         lastIndexOf(str, offsetIndex)：返回指定字符串最后一次出现的索引位置，从指定位置开始查找
         */
        int res = buffer.lastIndexOf("J");
        System.out.println(res);

        /*
         length()：获取当前StringBuffer对象的长度
         */
        int length = buffer.length();
        System.out.println(length);

        /*
         replace(start, end, str)：替换指定索引位置的字符串
         */
        buffer.replace(8, 12, "****");
        System.out.println(buffer);

        /*
         reverse()：反转字符串
         */
        buffer.reverse();
        System.out.println(buffer);

        // 案例：判断字符串是否是回文
        String s = "上海自来水来自海上";
        // 创建StringBuffer对象
        StringBuffer sb = new StringBuffer(s);
        // 将sb反转
        sb.reverse();
        System.out.println(s.equals(sb.toString()));

        /*
        setCharAt(index, ch)：修改指定索引位置的字符
         */
        buffer.setCharAt(3, '&');
        System.out.println(buffer);

        /*
        setLength(newLength)：设置新的长度，如果新长度大于当前长度，则添加空白字符，
        如果新长度小于当前长度，则截取指定长度的字符串
         */
        buffer.setLength(5);
        System.out.println(buffer);

        /*
         substring(start, end)：截取返回指定索引位置的字符串，不包含end
         substring(start)：截取指定索引位置到最后的字符串
         */
        String ss = buffer.substring(1, 4);
        System.out.println(ss);

        /*
        trimToSize()：将StringBuffer对象的容量调整为当前长度，减少内存消耗
         */
        buffer.trimToSize();
    }
}
